Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash:在给定字符串后检索数字_Bash - Fatal编程技术网

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