2

我有一个包含以下内容的文件:

  blabla sometinh#LULWUT-12342"asa
  haha"LULWUT-9635bgh
  haha'LULWUT-3679//stuff

模式 LULWUT- 总是在五个数字序列中的四个之前。如何检索数字模式?

对于示例居所,它将是

blabla sometinh#LULWUT-12342"asa > LULWUT-12342
haha"LULWUT-9635bgh              > LULWUT-9635
haha'LULWUT-3679//stuff          > LULWUT-3679
4

5 回答 5

7
grep -o 'LULWUT-[0-9][0-9]*' file

它使用 grep 的非标准 -o 扩展(但在 Mac OS、GNU 和 BSD 系统上仍然可用)。

于 2013-08-15T17:29:24.500 回答
2

要仅匹配 LULWUT- 后跟四位或文件数字模式,您可以使用以下命令:

grep -o 'LULWUT-[0-9]\{4\}[0-9]\?' file
于 2013-08-15T17:34:19.137 回答
2

这是一个仅限 bash 的解决方案。

shopt -s extglob # needed for the %%*() pattern below

while read line
do
    line_without_prefix="${line##*LULWUT}"    # remove longest prefix until LULWUT
    line_without_suffix="${line_without_prefix%%*([^0-9])}"   # remove longest non-digit suffix
    echo "LULWUT$line_without_suffix"
done

shopt -u extglob # undo, if extglob is not needed
于 2013-08-15T18:11:50.197 回答
1

您可以尝试使用以下命令替换输入文件中的(替代)文本。

sed 's/.*LUL/LUL/' file.txt > newfile.txt

它将创建一个名为 newFile.txt 的新文件

于 2013-08-15T17:47:52.693 回答
1
grep -o 'LULWUT-[0-9]*' sample.txt
于 2013-08-15T17:53:19.913 回答