在单个列上使用sed

时间:2016-07-26 20:41:49

标签: shell command-line sed

这是我正在运行的命令 它采用任何形式(数字)(b或q)//数字后跟b或q 并用b或q替换它

cat Table1.txt | sed -r 's/[0-9]([bq])/\1/g'

ex. 8q -(changes to)> q
    7b -(changes to)> b

但我不想只在第二栏上这样做

tyek8qk 9b88 column
uel76qk 8q76 word

会改为

tyek8qk b88 column
uel76qk q76 word

这是我到目前为止的尝试,但它只是产生输入

cat Table1.txt | sed -r '2,2s/[0-9]([bq])/\1/g'

2 个答案:

答案 0 :(得分:1)

您可以使用此sed:

sed -E 's/([^[:blank:]]+[[:blank:]]+)[0-9]([bq])/\1\2/' file

tyek8qk b88 column
uel76qk q76 word

如果你有gnu awk那么可以这样做:

awk '{$2=gensub(/[0-9]+([bq])/, "\\1", 1, $2)} 1' file

答案 1 :(得分:1)

awk中的另一个选项是使用substr。

awk '{$2=substr($2, 2, 3)}1' file
tyek8qk b88 column
uel76qk q76 word