我有一个包含以下内容的文件:
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
答案 0 :(得分:7)
grep -o 'LULWUT-[0-9][0-9]*' file
使用grep的非标准-o扩展名(但在Mac OS,GNU和BSD系统上仍可使用)。
答案 1 :(得分:2)
要仅匹配LULWUT-后跟四位或文件数字模式,您可以使用:
grep -o 'LULWUT-[0-9]\{4\}[0-9]\?' file
答案 2 :(得分: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
答案 3 :(得分:1)
您可以尝试使用以下命令替换输入文件中的(s ubstitute)文本。
sed 's/.*LUL/LUL/' file.txt > newfile.txt
它将创建一个名为newFile.txt的新文件
答案 4 :(得分:1)
grep -o 'LULWUT-[0-9]*' sample.txt