bash:在给定字符串后检索数字
我有一个包含以下内容的文件:bash:在给定字符串后检索数字,bash,Bash,我有一个包含以下内容的文件: blabla sometinh#LULWUT-12342"asa haha"LULWUT-9635bgh haha'LULWUT-3679//stuff 模式lullwut-总是在五个数字中的四个之前。如何检索数字模式 以住所为例 blabla sometinh#LULWUT-12342"asa > LULWUT-12342 haha"LULWUT-9635bgh > LULWUT-9635 haha'LULWUT
blabla sometinh#LULWUT-12342"asa
haha"LULWUT-9635bgh
haha'LULWUT-3679//stuff
模式lullwut-总是在五个数字中的四个之前。如何检索数字模式
以住所为例
blabla sometinh#LULWUT-12342"asa > LULWUT-12342
haha"LULWUT-9635bgh > LULWUT-9635
haha'LULWUT-3679//stuff > LULWUT-3679
它使用grep的非标准-o扩展名(但在Mac OS、GNU和BSD系统上仍然可用)。要仅匹配LULWUT-后跟四位或文件位模式,您可以使用:
grep -o 'LULWUT-[0-9]\{4\}[0-9]\?' file
您可以尝试使用以下命令替换输入文件中的文本
sed 's/.*LUL/LUL/' file.txt > newfile.txt
它将创建一个名为newFile.txt的新文件,这是一个仅适用于bash的解决方案
grep -o 'LULWUT-[0-9]*' sample.txt
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
这将匹配Lulwutomgbonkershallo0。我不认为这是OP想要的。grep-o正是我想要的~也感谢4或5数字模式~
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