簡體   English   中英

如何從head命令到sed添加到文件的第一行?

[英]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方法的正確版本:

的Linux

sed -e "1 i $(head -n 1 csv1.csv)" another_csv.csv
  • 在Linux上,您不需要將傳遞給i的文本放在單獨的行上(因此不需要\\和文字換行符( $'\\n' )。
  • 在原始方法中,將'$header'放在引號中,以防止字符串插值-需要使用雙引號: "$header" (在我的改寫中,我對整個sed命令使用了雙引號(一般不建議),然后直接放置內部命令,使用命令替換( $(...) )。

OSX

與以上相同,除了\\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM