1

次のステートメントは、txt ファイルの行番号を削除します。

cat withLineNumbers.txt | sed 's/^.......//' >> withoutLineNumbers.txt

入力ファイルは、次のステートメントで作成されます(これは私が理解しているものです):

nl -ba input.txt >> withLineNumbers.txt

私は猫の機能を知っており、出力が「withoutLineNumbers.txt」ファイルに書き込まれることを知っています。しかし、の部分は'| sed 's/^.......//''私にはよくわかりません。

御時間ありがとうございます。

4

3 に答える 3

4

その sed 正規表現は、各行から最初の 7 文字を単純に削除します。正規表現^.......は、「行頭の任意の 7 文字」です。sed 引数s/^.......//は、上記の正規表現を空の文字列に置き換えます。

詳細については、sed(1)man ページを参照してください。

于 2011-02-16T15:19:37.917 に答える
0

その sed ステートメントは、最初の 7 文字を削除すると言っています。点 "。" 任意の文字を意味します。これを行うさらに簡単な方法があります

 awk  '{print $2}' withLineNumbers.txt

awk を使用して 2 列目を出力するだけです。正規表現を使用する必要はありません

データにスペースが含まれている場合、

awk  '{$1="";print substr($0,2)}' withLineNumbers.txt
于 2011-02-16T15:24:30.977 に答える
0

sed は検索と置換を行っています。「s」は検索を意味し、次の文字 (「/」) は区切り文字、検索式は「^.......」、置換式は空の文字列 (つまり、最後の 2 つのスラッシュの間のすべて) です。 )。

検索は正規表現です。「^」は一致する行の開始を意味します。各 '。' 任意の文字に一致することを意味します。したがって、検索式は各行の最初の 7 文字に一致します。これは、空の文字列に置き換えられます。したがって、sed が行っているのは、各行の最初の 7 文字を削除することです。

同じ考えを達成するためのより簡単な方法は次のとおりです。

cut -b8- withLineNumbers.txt > withoutLineNumbers.txt
于 2011-02-16T15:22:50.817 に答える