两个标签替换文本 - sed的
问题描述:
我有以下输入文件:两个标签替换文本 - sed的
text1 text2 text3 text4
abc1 abc2 abc3 abc4
,我试图找到两个标签之间的第二个字符串(例如文本2,ABC2),并用另一个词替换它。
我试图与
sed s'/\t*\t/sample/1'
,但它只是删除选项卡,并不能取代这个词。
我感谢任何帮助!
答
在GAWK的选择,因为您标记awk
---
gawk -- 'BEGIN {FS="\t"; OFS="\t"} {$2="sample"; print}'
例如,
echo -e 'a\tb\tc\td' | gawk -- 'BEGIN {FS="\t"; OFS="\t"} {$2="sample"; print}'
打印
a sample c d
FS
在制表符处打破输入,OFS
使用制表符分隔输出字段,并且$2="sample"
仅更改第二个字段,其余字段保持不变。
+0
fyi没有什么特定的gawk,它可以在任何awk中工作。 –
答
试试这个
sed -e 's/\([a-zA-Z0-9]*\) \([a-zA-Z0-9]*\) \([a-zA-Z0-9]*\) \([a-zA-Z0-9]*\)/\1 sample \2 \3 \4/'
答
在GNU的sed v4.2.2我不得不使用-r
:
sed -r 's/^([^\t]*\t)[^\t]*/\1sample/'
的^([^\t]*\t)
是第一场和第一个选项卡,以及[^\t]*
是文第二场。 \1
恢复第一个字段和sample
是你想要的任何东西:)。
例如,
echo -e 'a\tb\tc\td' | sed -r 's/^([^\t]*\t)[^\t]*/\1sample/'
打印
a sample c d
这也适用于四个columnns等。例如
$ echo -e 'a\tb\tc' | sed -r 's/^([^\t]*\t)[^\t]*/\1sample/'
a sample c
$ echo -e 'a\tb\tc\td\te' | sed -r 's/^([^\t]*\t)[^\t]*/\1sample/'
a sample c d e
欢迎来到本站!查看[tour](http://*.com/tour)了解更多信息(和徽章:))。请提供您认为有用的答案,然后点击您最终使用的答案将其标记为已接受的答案。 – cxw