1
mansa, amit, janani ,[rakesh]
aruna,mahesh,,prathiksha

これは私の入力です。次の方法で出力を提供するシェルスクリプトまたは awk コマンドが必要です

mansa
amit
janani 
rakesh
aruna
mahesh
prathiksha

スクリプトはすべての , の括弧を削除する必要があります。

私はこれを試しました

awk -F "\[\][,]+" '{for(i=1;i<=NF;i++){print $i}}'

ただし、各レコードの後に​​ 1 行余分に出力します。

4

3 に答える 3

5

で簡単grep

$ grep -o '[a-z]\+' file
mansa
amit
janani
rakesh
aruna
mahesh
prathiksha
于 2013-03-07T10:47:15.060 に答える
0

角かっこのみを削除し、コンマ区切り内から項目を分割したい場合、次のように使用できます。

perl -pe 's/,+/,/g ; s/[\[\]]//g ; s/\s*,\s*/\n/g' foo.txt

このアプローチをお勧めする理由は、名前付きの値に数字や保持したい他の非アルファベット文字が含まれている場合です。

上記の perl 式には、3 つの正規表現が含まれています。最初の部分は複数のコンマを 1 つにまとめます (コンマ間の空の値を避けるため)。2 番目の部分は角括弧を削除します。3 番目の部分は、コンマ (左または右のいずれかに空白がある) を改行に置き換えて値を分割します。

出力は次のようになります。

mansa
amit
janani
rakesh
aruna
mahesh
prathiksha
于 2013-03-07T12:12:10.947 に答える
0

別のオプションは次のtrとおりです。

tr -cs '[:alpha:]' '[\n*]' < file

先頭の空白がある場合は空の行が作成されますが、フィルターで除外できます。

tr -cs '[:alpha:]' '[\n*]' < file | awk NF
于 2013-03-07T11:25:42.827 に答える