約25列のCSVファイルがあります。ファイルには26個の列を含む行があるので、追加の列を含む行を検索して削除して、ファイル全体でawkを使用できるようにしたいと思います。
フィールドは次の区切り文字で区切られます。;セミコロン。追加の列の形式は次のとおりです。VARNAME="ここにテキストを入力してください"「text is here」値は任意のテキストです。
削除に成功しました。変数名すべての行で任意の値(引用符)に一致するパターンを参照することはできません。
私の目標は追加の列です(VARNAME="ここにテキストを入力してください")削除してください。
例:
現在のファイル:
ROW1: VAR1:"Value 1";VAR2="Value 2";VAR3="Value 3"
ROW2: VAR1:"Value 4";VAR2="Value 5";VAREXT="Different Values";VAR3="Value 6"
ターゲットファイルは次のようにする必要があります。
ROW1: VAR1:"Value 1";VAR2="Value 2";VAR3="Value 3"
ROW2: VAR1:"Value 4";VAR2="Value 5";VAR3="Value 6"
答え1
次のようなものを使用できます。
sed 's/;VAREXT.[^;]*//' file #combine with -i for in-place editing
テスト:
a=$'"ROW2: VAR1:"Value 4";VAR2="Value 5";VAREXT="Different Values";VAR3="Value 6"'
b=$'"ROW2: VAR1:"Value 4";VAR2="Value 5";VAREXT="1234567";VAR3="Value 6"'
c=$'"ROW2: VAR1:"Value 4";VAR2="Value 5";VAREXT="VAREXT";VAR3="Value 6"'
echo "$a" |sed 's/;VAREXT.[^;]*//'
echo "$b" |sed 's/;VAREXT.[^;]*//'
echo "$c" |sed 's/;VAREXT.[^;]*//'
"ROW2: VAR1:"Value 4";VAR2="Value 5";VAR3="Value 6"
"ROW2: VAR1:"Value 4";VAR2="Value 5";VAR3="Value 6"
"ROW2: VAR1:"Value 4";VAR2="Value 5";VAR3="Value 6"
答え2
CSVにヘッダーがなく、セミコロンの後にスペースがなく、1行VAREXT...
に1つしかないと予想して、次の例を試してください。
sed 's/;VAREXT=\"[A-Za-z0-9 ]*\"//' in.csv
の価値はどこにありますか?周波数変換文字、数字、スペースを組み合わせて使用できます。