2016-12-17 38 views
0

我在shell腳本實際上是新的。我有一個662,2016-12-31寫的file.txt文件。傳遞字在命令

例如:#cat file.txt的

662,2016-12-31

我有命令 另一個script.sh文件「{打印$ 2" ,0 「$ 1」,FIELD1,FIELD2 }」

例如:#cat script.sh

'{打印$ 2" ,0 「$ 1」,字段1,字段2}'

我想在FIELD1和2016年12月31日打印662在field2中。可以做到嗎?

+0

我想你應該改一下你的問題,因此更清楚 - 這是祕密越來越堆棧溢出一個偉大的答案。現在我不知道你到底想做什麼。 – kamituel

+0

說實話,沒有。但是,請看一下:'cat file.txt | perl的-ne '打印 「字段1:$ 1場2:$ 2 \ n」 如果/(.*),(.*)/''。現在,您可以修改部分'print'後重新排序字段,或者在兩者之間添加一些文字。如果這就是你需要的。 – kamituel

+0

「cat install_offer1.csv | sed's /」880 // g'| sed's /「88 // g'| sed's /」// g'| sed's /,019 /,19/g 「| nawk -F,'{print $ 1',0「$ 2」,field1,field2「}'> install_offer2.csv」其實這是完整的命令,我只想在field1和2016-12-31的地方打印662所以每當我改變file.txt時,命令也會改變,因爲它總是從file.txt中取出參數 –

回答

0

這可以使用awk命令很容易地實現。您可以檢查以下簡單的shell腳本,

#!/bin/sh 

InputData=`cat file.txt` 

field1=`echo $InputData | awk -F "," '{print $1}'` 
field2=`echo $InputData | awk -F "," '{print $2}'` 

echo "field1=$field1" 
echo "field2=$field2" 

輸出:

field1=662 
field2=2016-12-31 
0

您可以通過使用分隔符爲cut命令得到FIELD1和FIELD2的價值 「」

field1=`cat file.txt | cut -d "," -f1` 
field2=`cat file.txt | cut -d "," -f2` 

'{print $2",0"$1",$field1,$field2}'