2016-01-23 67 views
1

我在Linux中使用bash腳本。我有一個變量,看起來像這樣:使用Bash腳本在一行中分隔列

a="1-1-1 1-1-2 1-1-3 1-1-4" 

我想使用AWK分隔值等於或大於1-1-3的列。

我的輸出應該是:

1-1-3 1-1-4 

有人可以幫助我?

+0

你如何定義」大於「?那麼'a =「2-1-1 1-1-2 1-1-3 1-1-4」'? –

+0

我想起初,第一列應該比較二到三,就你的例子來說,輸出將是2-1-1 1-1-3 1-1-4。如果我們的數據是單列,我可以使用echo「$ a | awk'($ 0> = 1-1-3){print $ 0}'...但現在我在一行輸入 – user3891747

回答

1

你可以不用一個循環,如果你使用的空間記錄分隔符:

echo $a | awk -v RS=' ' -v ORS=' ' '{$1=$1} $1>="1-1-3"' 
1

您可以遍歷所有的線和比較:

echo $a | awk -v ORS=' ' '{for(i=1;i<=NF;i++) if($i >= "1-1-3") print $i;}' 
+0

非常感謝您的幫助。作品。 – user3891747

1

排序的-V選項可以讓你「版本「排序可能會有幫助:

$ a="2-0-0 1-1-1 1-1-2 1-1-3 1-1-4" 
$ tr ' ' '\n' <<<"$a" | sort -V 
1-1-1 
1-1-2 
1-1-3 
1-1-4 
2-0-0