ファイルの最初の行から最初の2つの列を削除するコマンドを探しています。列の区切り記号はパイプです。列の数はさまざまです。
最初の2列だけ盲目的に削除するだけです。以下の例
入力:列1 |列3 |
出力列3 |
答え1
おそらく最も簡単なコマンドは次のとおりです。
sed '1s/^[^|]*|[^|]*|//g' input > output
このsed
コマンドは1号線のみ交換してください。
この入力の場合:
foo|bar|baz|doo|bee|doo
123|456
789|101|112
次の出力が生成されます。
baz|doo|bee|doo
123|456
789|101|112
答え2
このコマンドを試してください。
head -2 inputFile.txt | cut -d "|" -f 3- > outputFile.txt
答え3
あなたが何を言っているのかを推測すると、cutコマンドはそれを行います。
echo "foo|bar|baz" | cut -d"|" -f3
したがって、最初の行だけを編集するには、headコマンドを使用することもできます。
head -n1 filename | cut -d"|" -f3
sedを使用して操作を実行することもできます。
head -n1 filename | sed 's/^.*|.*|//g'
答え4
これにより、ライン1からパイプで区切られた最初の2つのフィールドが切り捨てられ、ファイルの残りの部分(ライン2以降)は変更なしでコピーされます。
(head -n 1 input | cut -d '|' -f 3- ; tail -n +2 input) > output
やや効率的ですが、構文的に厳しいアプローチは次のとおりです。
{ head -n 1 input | cut -d '|' -f 3- ; tail -n +2 input; } > output