![](/img/trans.png)
[英]How to remove a line containing specific string from file with sed command
[英]How to result from head command to sed to add to the first line of the file?
我想將head
命令的結果添加到sed
。 我可以在一個班輪里做到這一點嗎?
到目前為止,這就是我提出的。
header=`head -n 1 csv1.csv`
sed -e '1 i\'$'\n''$header' another_csv.csv
我不知道如何將結果從一個命令傳遞給另一個命令。 我嘗試過usnig xargs
但沒有運氣。 我不知道如何將其作為變量傳遞。
除非我缺少任何東西,否則可能是:
head -1 csv1.csv && cat another.csv
這可能對您有用(GNU sed):
sed -e '1r file2' -e 'q' file1
或使用:
head -1 file1 | cat - file2
awk :
awk 'NR==1{getline h<"csv1.csv";print h}7 ' another.csv
測試:
kent$ head f c
==> f <==
1
2
3
4
5
==> c <==
10
9
8
kent$ awk 'NR==1{getline h<"c";print h}7 ' f
10
1
2
3
4
5
古努塞德
kent$ sed '1s/.*/head -n 1 c;echo &/ge' f
10
1
2
3
4
5
@anubhava的解決方案比較簡單,但是只是為了展示OP方法的正確版本:
sed -e "1 i $(head -n 1 csv1.csv)" another_csv.csv
i
的文本放在單獨的行上(因此不需要\\
和文字換行符( $'\\n'
)。 '$header'
放在單引號中,以防止字符串插值-需要使用雙引號: "$header"
(在我的改寫中,我對整個sed命令使用了雙引號(一般不建議),然后直接放置內部命令,使用命令替換( $(...)
)。 與以上相同,除了\\
和i
之后必須插入換行符( $'\\n'
):
sed -e '1 i\'$'\n'"$(head -n 1 csv1.csv)" another_csv.csv
(相當於:
sed -e "1 i\\
$(head -n 1 csv1.csv)
" another_csv.csv
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.