我有一个文件,里面有一串单词,比如:
FIRST_WORD abc FIRST_WORD(1) bcd FIRST_WORD(2) def SECOND_WORD gh THIRD_WORD jiu THIRD_WORD(1) lom ...
我想删除(i),当它存在时,得到:
(i)
FIRST_WORD abc FIRST_WORD bcd FIRST_WORD def SECOND_WORD gh THIRD_WORD jiu THIRD_WORD lom ...
pgpifvop1#
你可以得到它:
test="123456" echo ${test:3}
输出量:
456
pdsfdshx2#
试试这个.
sed 's/([0-9])//g' file
qhhrdooz3#
使用sed全局替换括号内的所有数字字符串:
sed
$ sed 's/([0-9]\+)//g' file FIRST_WORD abc FIRST_WORD bcd FIRST_WORD def SECOND_WORD gh THIRD_WORD jiu THIRD_WORD lom # Save the changes back to the file $ sed -i 's/([0-9]\+)//g' file
使用sed删除前3个字符:
$ sed 's/^...//' file ST_WORD abc ST_WORD(1) bcd ST_WORD(2) def OND_WORD gh RD_WORD jiu RD_WORD(1) lom
9vw9lbht4#
这可能对你有用(GNU sed):
sed -r '$!N;s/^((\S+).*\n\2)\([^)]*\)/\1/;P;D' file
然而,它可能是过度杀伤,如果:
sed 's/([0-9]\+)//' file
就足够了。
ymdaylpp5#
下面是一个纯bash实现:
while read -r a b; do echo "${a%(*)}" "$b" done < input.txt
twh00eeo6#
我通常使用sed来替换文件,因为它是专门为此而构建的,但是如果有人需要在更长的bash脚本中执行此操作,您也可以使用bash的搜索和替换语法${var//search/replace}。
${var//search/replace}
while read -r line; do echo "${line//(*)/}" done < ./in.txt
6条答案
按热度按时间pgpifvop1#
你可以得到它:
输出量:
pdsfdshx2#
试试这个.
qhhrdooz3#
使用
sed
全局替换括号内的所有数字字符串:使用
sed
删除前3个字符:9vw9lbht4#
这可能对你有用(GNU sed):
然而,它可能是过度杀伤,如果:
就足够了。
ymdaylpp5#
下面是一个纯bash实现:
twh00eeo6#
我通常使用
sed
来替换文件,因为它是专门为此而构建的,但是如果有人需要在更长的bash脚本中执行此操作,您也可以使用bash的搜索和替换语法${var//search/replace}
。