一個SIML-csv文件我有一個文件是這樣的:過程與AWK
"text I don't know" command other "text"
"some" different text "type"
我需要獲得「文本我不知道」和「一些」,使用sed,awk的或任何慶典工具,被傳送到另一個命令。
任何提示?
一個SIML-csv文件我有一個文件是這樣的:過程與AWK
"text I don't know" command other "text"
"some" different text "type"
我需要獲得「文本我不知道」和「一些」,使用sed,awk的或任何慶典工具,被傳送到另一個命令。
任何提示?
這看起來過於簡單,這意味着您可能對awk陌生。這是完全可以接受的,或者我誤解了你的問題。我希望它的前者。
下面應該做你所要求的。將字段分隔符設置爲「-F\"
(跳過」with「)並打印第二個字段,第一個字段位於」左側「,或者什麼也不是,您可以放一個管道和行尾來做你想做的事情
awk -F\" '{print FS$2FS}' inputFile.txt
「的文字我不知道」
「一些」
FS是現場分隔符
sed 's/^\("[^"]*"\).*/\1/'
這涉及包含一個簡單的雙引號字段放棄任何額外的材料的行。它通過任何不匹配的行。
如果你想刪除不匹配的行,則:
sed -n '/^\("[^"]*"\).*/s//\1/p'
當它找到一個匹配這不默認,並打印打印。
如果你要處理的數據字段,如:
"He said, ""It's horrid""" and he meant it!
那麼你必須工作相當困難。如果您的sed
支持擴展正則表達式或PCRE(Perl兼容的正則表達式),那麼您可以這樣做。如果不是,請改用awk
。
不知道是否"
應該是輸出的一部分或不是,假設不是。如果我錯了,將它添加到輸出中應該不會有任何問題(故意從下面的列表中排除sed
,因爲@ Jonathan-Leffler的答案非常好)
不是自從"
作爲第一個字符輸出後,這是一個完美的解決方案,但它很簡單。使用純的bash
cut -d\" -f1-2 input
解,參見5.1 Bourne Shell Variables使用AWK IFS
#!/bin/bash
IFS='"'
while read -ra LINE;
do
echo ${LINE[1]}
done < input
解的解釋,並且-F
標誌以改變分隔符來"
$ awk -F\" '{print $2}' input
和最後一個在Perl 。-a
打開autosplit模式 - perl會自動將輸入行分割成@F
陣列。 -F
與-a一起使用來選擇分割線的分隔符。
perl -F\" -lane 'print $F[1]' input
舉一個小例子。另外,這功課呢? –