我有以下輸入文件:兩個標籤替換文本 - sed的
text1 text2 text3 text4
abc1 abc2 abc3 abc4
,我試圖找到兩個標籤之間的第二個字符串(例如文本2,ABC2),並用另一個詞替換它。
我試圖與
sed s'/\t*\t/sample/1'
,但它只是刪除選項卡,並不能取代這個詞。
我感謝任何幫助!
我有以下輸入文件:兩個標籤替換文本 - 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"
僅更改第二個字段,其餘字段保持不變。
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://stackoverflow.com/tour)瞭解更多信息(和徽章:))。請提供您認爲有用的答案,然後點擊您最終使用的答案將其標記爲已接受的答案。 – cxw