簡體   English   中英

Linux:從使用 cat 讀取的 infile 中將兩個子字符串連接到一個新行

[英]Linux: concatenate two substrings to a new line from infile read with cat

我有一個 infile,讓我們說:

01;Masters;Robin;Atlanta;38
02;Jarau;Jennifer;Washington;29
03;Clavell;James;New York;78
...

我想創建一個如下所示的輸出:

Robin Masters, 38
Jennifer Jarau, 29
James Clavell, 78

但我不會使用 'while read in; 做 ...; done' 循環,因為讀取較大的文件非常非常慢。

我很想有一個“貓”的解決方案,如下所示:

cat infile | echo $3" "$2", "$4 >> staff.list

(我讀過 $0、$1、$2 是輸入參數...)

cat 是否有解決方案,可能與awkcut結合使用?

先感謝您,

-Linuxfluesterer

$ awk '{printf "%s %s, %s\n", $3, $2, $5}' FS=\; infile
Robin Masters, 38
Jennifer Jarau, 29
James Clavell, 78

或者

$ awk '{print $3, $2 ",", $5}' FS=\; infile
Robin Masters, 38
Jennifer Jarau, 29
James Clavell, 78

sed沒有那么漂亮,但您也可以這樣做:

$ v='\([^;]*\)'
$ sed -e "s/$v;$v;$v;$v;$v/\3 \2, \5/" infile
Robin Masters, 38
Jennifer Jarau, 29
James Clavell, 78

當然不需要cat

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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