我正在xargs結合使用,cut但我不確定如何將輸出獲取cut到我可以通過管道用于進一步處理的變數。
所以,我有一個像這樣的文本檔案:
test.txt:
/some/path/to/dir,filename.jpg
/some/path/to/dir2,filename2.jpg
...
我這樣做:
cat test.txt | xargs -L1 | cut -d, -f 1,2
/some/path/to/dir,filename.jpg
但我想做的是:
cat test.txt | xargs -L1 | cut -d, -f 1,2 | echo $1 $2
其中 $1 和 $2 是/some/path/to/dir和filename.jpg
我很難過,我似乎無法實作這一目標..
uj5u.com熱心網友回復:
你可能想說:
#!/bin/bash
while IFS=, read -r f1 f2; do
echo ./mypgm -i "$f1" -o "$f2"
done < test.txt
IFS=, read -r f1 f2從一行中讀取一行test.txt,用逗號分割行,然后分配變數f1和f2欄位。- 該行
echo ..用于演示目的。$f1使用and用你想要的命令替換該行$f2。
uj5u.com熱心網友回復:
嘗試這個:
cat test.txt | awk -F, '{print $1, $2}'
來自man xargs:
xargs [-L number] [utility [argument ...]]
-L number為每個讀取的非空行數 呼叫實用程式。
來自man awk:
awk掃描每個輸入檔案以查找與prog或一個或多個指定為-f progfile的檔案中指定的一組模式中的任何一個匹配的行。
所以你不必使用xargs -L1,因為你沒有通過utilityto 呼叫。
也來自man awk:
-F fs選項將輸入欄位分隔符定義為正則運算式fs。
所以awk -F,可以更換cut -d,零件。
這些欄位表示為$1,$2,...,而$0指的是整行。
$1第一列也是如此$2,第二列也是如此。
動作是一系列陳述句。陳述句可以是以下之一:
列印 [運算式串列] [ >運算式]
一個空的運算式串列代表$0。
該
> file存在則列印>> file在管道| cmd上),由當前輸出欄位分隔符分隔,并由輸出記錄分隔符終止。
將所有這些放在一起,cat test.txt | awk -F, '{print $1, $2}'將實作您想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/445475.html
下一篇:根據欄位數連接列
